package lambda03;

import org.junit.Test;
/**
 * 二.简略格式
 *   a.(参数名)->{语句1;语句2;...} //()中可以省略参数类型,因为Lambda可以根据代码自动推断类型
 *   b.参数名->{语句1;语句2;...}//当接口中的抽象方法的形参只有一个的时候,Lambda表达式可以省略()
 *   c.(参数类型1 参数名1,参数类型2 参数名2,....)-> 语句; //当重写接口中的抽象方法只有一条语句的时候,我们可以省略{}
 *                                                  //省略{}的同时,也要省略return和;
 */
public class LambdaDemo02 {
    @Test
    public void test1() {
        method01("你好",(str)->{
            System.out.println(str);
        });
        method02(12,4,(a,b)->{
            return a + b;});
    }

    @Test
    public void test2(){
        method01("大家好",str -> {
            System.out.println(str);
        });

/*        method02(14,6,a,b->{
            return a + b;
        });*/
    }

    @Test
    public void test3() {
        method01("你好", str -> System.out.println(str));
        method02(12, 4, (a, b) -> a + b);
    }

    public void method01(String str, Printer p) {
        p.print(str);
    }

    public void method02(int a, int b, Calculator c) {
        System.out.println(c.getSum(a, b));
    }
}
